left
详情
主题:Hibernate 参数说明 返回 搜索

1. lazy 延迟加载


lazy=true  使用懒加载(延迟)

lazy=extra (增强延迟)


Hibernate.initialize(obj.getObj());     延迟加载时候需要立到了加载。可以调用这个静态方法



<generator class="native" />  自增方式

例:

        <id name="id" type="int">
            <column name="id" />
            <generator class="native" />
        </id>



2. inverse  cascade cascade


 inverse="true"   表示不去双向维护,建议设置
cascade="delete"  表示能删除多对一,连带多的那头关联的都删除,不建议! 注:默认多对一,多还关联一的时候不能删除一
cascade="save-update"  会保存对象关联的临时对象到数据库
order-by="id asc"  升 order-by="id desc"


例:

        <set name="students" table="t_students" inverse="true" order-by="id asc">
          <key>
            <column name="teacher_id"></column>
          </key>          
          <one-to-many class="cc.www.hibernatedemo.model.StudentEntity"/>
        </set>



3.batch-size="10"  

作用: 一次查询的条数,减少查询语句


注:  查询的值一大,返回值越多,占用内存越大。返之查询的少,占用的少,但发起的SQL条数多


例:


        <set name="student" table="t_student" inverse="false" lazy="true" batch-size="10">
            <key>
                <column name="student_id" />
            </key>
            <one-to-many class="cc.www.hibernateproject.model.Student" />
        </set>


查询hql语句:    hql 是hibernate的sql语法,和sql类似.

      //form Teacher是类
      String hqlString ="from Teacher";
      @SuppressWarnings("unchecked")
    Query<Teacher> query =session.createQuery(hqlString);
      List<Teacher> teachers = query.list();
      System.out.println(teachers);
   
      
      //遍历Tercher
      for(Teacher t:teachers) {
        System.out.println(t.getStudent().size());
      }



4.fetch 检索策略


fetch="select"   一次只发一条,默认

fetch="subselect"    指定子查询,发起的语句会少,但设置子查询batch-size会失效.

fetch="join"  左外连接查询, 左外查询不能用hql语句. batch-size和 lazy 都会失效

警告:
您是否确定删除贴子?
确定 取消
copyright